import request from '@/utils/request'

/**
 * 创建相册
 * @param {Object} data - 相册数据
 * @param {string} data.title - 相册标题
 * @param {string} [data.description] - 相册描述
 * @param {string} data.status - 相册状态(0-私有，1-公开)
 * @param {number} [data.coverPhotoId] - 封面照片ID
 * @returns {Promise}
 */
export function createAlbum(data) {
  return request({
    url: '/v1/album/create',
    method: 'post',
    data
  })
}

/**
 * 获取相册分页列表
 * @param {Object} params - 查询参数
 * @param {number} params.current - 当前页码
 * @param {number} params.size - 每页大小
 * @param {string} [params.titleLike] - 相册标题(模糊查询)
 * @param {number[]} [params.userIdList] - 用户ID列表
 * @param {number} [params.albumType] - 相册类型ID
 * @param {string} [params.status] - 状态(0-私有正常，1-公开正常，2-私有已删除，3-公开已删除)
 * @param {string} [params.createTimeStart] - 创建开始时间
 * @param {string} [params.createTimeEnd] - 创建结束时间
 * @returns {Promise}
 */
export function getAlbumPage(params) {
  // 创建一个新的 URLSearchParams 实例
  const searchParams = new URLSearchParams()
  
  // 添加非数组参数
  Object.entries(params).forEach(([key, value]) => {
    if (value !== undefined && !Array.isArray(value)) {
      searchParams.append(key, value)
    }
  })
  
  // 特殊处理数组参数
  if (params.userIdList?.length) {
    params.userIdList.forEach(id => {
      searchParams.append('userIdList', id)
    })
  }

  return request({
    url: '/v1/album/page',
    method: 'get',
    params: searchParams
  })
}

/**
 * 更新相册信息
 * @param {number} albumId - 相册ID
 * @param {Object} data - 更新数据
 * @param {string} [data.title] - 相册标题
 * @param {string} [data.description] - 相册描述
 * @param {string} [data.status] - 相册状态(0-私有，1-公开)
 * @param {string} [data.coverPhotoId] - 封面照片ID
 * @returns {Promise}
 */
export function updateAlbum(albumId, data) {
  return request({
    url: `/v1/album/update/${albumId}`,
    method: 'put',
    data
  })
}

/**
 * 获取我的相册列表（分页）
 * @param {Object} params - 分页参数
 * @param {number} params.current - 当前页码
 * @param {number} params.size - 每页大小
 * @param {string} [params.orderBy] - 排序字段(createTime/title/photoCount)
 * @param {boolean} [params.desc] - 是否降序
 * @returns {Promise} - 返回相册列表
 */
export function getMyAlbums(params = { current: 1, size: 4 }) {
  // 过滤掉 undefined 和 null 的参数
  const validParams = {};
  Object.entries(params).forEach(([key, value]) => {
    if (value !== undefined && value !== null) {
      validParams[key] = value;
    }
  });

  return request({
    url: '/v1/album/my',
    method: 'get',
    params: validParams
  });
}

/**
 * 获取当前用户的精选相册
 * @returns {Promise} 返回精选相册ID
 */
export function getFeaturedAlbum() {
  return request({
    url: '/v1/album/featured',
    method: 'get'
  })
}

/**
 * 删除相册
 * @param {number} albumId - 相册ID
 * @returns {Promise}
 */
export function deleteAlbum(albumId) {
  return request({
    url: `/v1/album/delete/${albumId}`,
    method: 'delete'
  })
} 